/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.login;

import br.com.saber.certificacao.beansjsf.interfacebean.BeanJSFInterface;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
@ManagedBean(name = "fluxoExibicaoLogin")
@SessionScoped
public class FluxoExibicao implements BeanJSFInterface {

    private boolean exibirMenuLogin;
    private boolean exibirFormularioCadastro;
    private boolean exibitResetSenha;
    private String tituloMenu;
    private String urlImg;

    private enum MenuControle {

        EXIBIR_LOGIN, CADASTRO_NOVO_USER, RESET_PASS;
    }

    /** Creates a new instance of FluxoExibicao */
    public FluxoExibicao() {
    }

    public String exibirLogin() {
        alterarMenu(MenuControle.EXIBIR_LOGIN);
        return "deslogar.xhtml";
    }

    public String exibirCadastro() {
        alterarMenu(MenuControle.CADASTRO_NOVO_USER);
        return "deslogar.xhtml";
    }

    public String exibirReset() {
        alterarMenu(MenuControle.RESET_PASS);
        return "deslogar.xhtml";
    }

    @PostConstruct
    @Override
    public void init() {
        exibirLogin();
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Login: (init()) chamado...");
    }

    @PreDestroy
    @Override
    public void end() {
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Login: (end()) chamado...");
    }

    private void alterarMenu(MenuControle menuControle) {
        exibirMenuLogin = (MenuControle.EXIBIR_LOGIN.equals(menuControle));
        exibirFormularioCadastro = (MenuControle.CADASTRO_NOVO_USER.equals(menuControle));
        exibitResetSenha = (MenuControle.RESET_PASS.equals(menuControle));
        acertaDetalhes(menuControle);
    }

    private void acertaDetalhes(MenuControle menuControle) {
        switch (menuControle) {
            case EXIBIR_LOGIN:
                this.tituloMenu = UtilMetodos.getResourceBundle("richpanelLoginTitle", FacesContext.getCurrentInstance());
                this.urlImg = "loginLock_48.png";
                break;
            case CADASTRO_NOVO_USER:
                this.tituloMenu = UtilMetodos.getResourceBundle("richpanelCadastro", FacesContext.getCurrentInstance());
                this.urlImg = "user_add_48.png";
                break;
            case RESET_PASS:
                this.tituloMenu = UtilMetodos.getResourceBundle("richpanelResetPassword", FacesContext.getCurrentInstance());
                this.urlImg = "password_48.png";
                break;
            default:
                throw new AssertionError("Login entrando no Default do Switch do fluxo de exibição");
        }
    }

    //=========================
    //Getters AND Setters
    //=========================
    public boolean isExibirMenuLogin() {
        return exibirMenuLogin;
    }

    public void setExibirMenuLogin(boolean exibirMenuLogin) {
        this.exibirMenuLogin = exibirMenuLogin;
    }

    public String getTituloMenu() {
        return tituloMenu;
    }

    public void setTituloMenu(String tituloMenu) {
        this.tituloMenu = tituloMenu;
    }

    public String getUrlImg() {
        return urlImg;
    }

    public void setUrlImg(String urlImg) {
        this.urlImg = urlImg;
    }

    public boolean isExibirFormularioCadastro() {
        return exibirFormularioCadastro;
    }

    public void setExibirFormularioCadastro(boolean exibirFormularioCadastro) {
        this.exibirFormularioCadastro = exibirFormularioCadastro;
    }

    public boolean isExibitResetSenha() {
        return exibitResetSenha;
    }

    public void setExibitResetSenha(boolean exibitResetSenha) {
        this.exibitResetSenha = exibitResetSenha;
    }
}
